<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This file documents the use of the GNU compilers.

Copyright © 1988-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<title>Microsoft Windows Variable Attributes (Using the GNU Compiler Collection (GCC))</title>

<meta name="description" content="Microsoft Windows Variable Attributes (Using the GNU Compiler Collection (GCC))">
<meta name="keywords" content="Microsoft Windows Variable Attributes (Using the GNU Compiler Collection (GCC))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Indices.html" rel="index" title="Indices">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Variable-Attributes.html" rel="up" title="Variable Attributes">
<link href="MSP430-Variable-Attributes.html" rel="next" title="MSP430 Variable Attributes">
<link href="M32R_002fD-Variable-Attributes.html" rel="prev" title="M32R/D Variable Attributes">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
kbd.key {font-style: normal}
span.r {font-family: initial; font-weight: normal; font-style: normal}
span:hover a.copiable-link {visibility: visible}
-->
</style>


</head>

<body lang="en_US">
<div class="subsection-level-extent" id="Microsoft-Windows-Variable-Attributes">
<div class="nav-panel">
<p>
Next: <a href="MSP430-Variable-Attributes.html" accesskey="n" rel="next">MSP430 Variable Attributes</a>, Previous: <a href="M32R_002fD-Variable-Attributes.html" accesskey="p" rel="prev">M32R/D Variable Attributes</a>, Up: <a href="Variable-Attributes.html" accesskey="u" rel="up">Specifying Attributes of Variables</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h4 class="subsection" id="Microsoft-Windows-Variable-Attributes-1"><span>6.34.9 Microsoft Windows Variable Attributes<a class="copiable-link" href="#Microsoft-Windows-Variable-Attributes-1"> &para;</a></span></h4>

<p>You can use these attributes on Microsoft Windows targets.
<a class="ref" href="x86-Variable-Attributes.html">x86 Variable Attributes</a> for additional Windows compatibility
attributes available on all x86 targets.
</p>
<dl class="table">
<dt><a class="index-entry-id" id="index-dllexport-variable-attribute"></a>
<a id="index-dllimport-variable-attribute"></a><span><code class="code">dllimport</code><a class="copiable-link" href="#index-dllimport-variable-attribute"> &para;</a></span></dt>
<dt><code class="code">dllexport</code></dt>
<dd><p>The <code class="code">dllimport</code> and <code class="code">dllexport</code> attributes are described in
<a class="ref" href="Microsoft-Windows-Function-Attributes.html">Microsoft Windows Function Attributes</a>.
</p>
</dd>
<dt><a id="index-selectany-variable-attribute"></a><span><code class="code">selectany</code><a class="copiable-link" href="#index-selectany-variable-attribute"> &para;</a></span></dt>
<dd><p>The <code class="code">selectany</code> attribute causes an initialized global variable to
have link-once semantics.  When multiple definitions of the variable are
encountered by the linker, the first is selected and the remainder are
discarded.  Following usage by the Microsoft compiler, the linker is told
<em class="emph">not</em> to warn about size or content differences of the multiple
definitions.
</p>
<p>Although the primary usage of this attribute is for POD types, the
attribute can also be applied to global C++ objects that are initialized
by a constructor.  In this case, the static initialization and destruction
code for the object is emitted in each translation defining the object,
but the calls to the constructor and destructor are protected by a
link-once guard variable.
</p>
<p>The <code class="code">selectany</code> attribute is only available on Microsoft Windows
targets.  You can use <code class="code">__declspec (selectany)</code> as a synonym for
<code class="code">__attribute__ ((selectany))</code> for compatibility with other
compilers.
</p>
</dd>
<dt><a id="index-shared-variable-attribute"></a><span><code class="code">shared</code><a class="copiable-link" href="#index-shared-variable-attribute"> &para;</a></span></dt>
<dd><p>On Microsoft Windows, in addition to putting variable definitions in a named
section, the section can also be shared among all running copies of an
executable or DLL.  For example, this small program defines shared data
by putting it in a named section <code class="code">shared</code> and marking the section
shareable:
</p>
<div class="example smallexample">
<pre class="example-preformatted">int foo __attribute__((section (&quot;shared&quot;), shared)) = 0;

int
main()
{
  /* <span class="r">Read and write foo.  All running
     copies see the same value.</span>  */
  return 0;
}
</pre></div>

<p>You may only use the <code class="code">shared</code> attribute along with <code class="code">section</code>
attribute with a fully-initialized global definition because of the way
linkers work.  See <code class="code">section</code> attribute for more information.
</p>
<p>The <code class="code">shared</code> attribute is only available on Microsoft Windows.
</p>
</dd>
</dl>

</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="MSP430-Variable-Attributes.html">MSP430 Variable Attributes</a>, Previous: <a href="M32R_002fD-Variable-Attributes.html">M32R/D Variable Attributes</a>, Up: <a href="Variable-Attributes.html">Specifying Attributes of Variables</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
